var gulp = require("gulp");
var watch = require("gulp-watch");
var sass = require("gulp-sass");
var clean = require("gulp-clean"); // 清空文件夹
var browserSync = require("browser-sync").create(); // 用来打开一个浏览器

var rev = require("gulp-rev"); //添加版本号，哈希码。处理浏览器缓存，更改文件名版本
var revReplace = require("gulp-rev-replace"); //更新index里面的引用
var useref = require("gulp-useref"); //写注释合并文件
var filter = require("gulp-filter"); //筛选 和 恢复
var uglify = require("gulp-uglify"); //压缩js
var csso = require("gulp-csso"); //压缩css
var imagemin = require("gulp-imagemin"); //压缩图片
var fileinclude = require("gulp-file-include"); //html代码复用

var html_path = "src/**/*.html";
var js_path = "src/js/**/*.js";
var css_libs_path = "src/css/**/*.css";
var sass_libs_path = "src/css/**/*.scss";
var img_path = "src/img/**/*.{png,jpg,gif,ico}";

gulp.task("watch", function () {
    w("./src/**/*.html", "html");
    w(css_libs_path, "css_libs");
    w(sass_libs_path, "sass_libs");
    w(js_path, "js_path");
    w(img_path, "testImagemin");

    function w(path, task) {
        watch(path, function () {
            gulp.start(task);
            browserSync.reload();
        });
    }
});

// 清空dist文件夹
gulp.task("clean", function () {
    return gulp.src(["dist/*"]).pipe(clean());
});

gulp.task("html", function () {
    gulp.src(["./src/*.html"]) //主文件
        .pipe(
            fileinclude({
                prefix: "@@", //变量前缀 @@include
                basepath: "./src/include", //引用文件路径
                indent: true, //保留文件的缩进
            })
        )
        .pipe(gulp.dest("dist/")); //输出文件路径
});

gulp.task("testImagemin", function () {
    gulp.src(img_path)
        // .pipe(
        //     imagemin({
        //         optimizationLevel: 5, //类型：Number  默认：3  取值范围：0-7（优化等级）
        //         progressive: true, //类型：Boolean 默认：false 无损压缩jpg图片
        //         interlaced: true, //类型：Boolean 默认：false 隔行扫描gif进行渲染
        //         multipass: true, //类型：Boolean 默认：false 多次优化svg直到完全优化
        //     })
        // )
        .pipe(gulp.dest("dist/img"));
});

// js模板处理
gulp.task("js_path", function () {
    return gulp
        .src(js_path)
        .pipe(uglify()) // Minify any javascript sources
        .pipe(gulp.dest("dist/js"));
});

// 打包css
gulp.task("css_libs", function () {
    return gulp
        .src(css_libs_path)
        .pipe(csso()) // Minify any CSS sources
        .pipe(gulp.dest("dist/css"));
});

// 打包sass
gulp.task("sass_libs", function () {
    return gulp
        .src(sass_libs_path)
        .pipe(sass().on("error", sass.logError))
        .pipe(gulp.dest("dist/css"));
});

// 启本地服务，并打开浏览器
gulp.task("browser", function () {
    browserSync.init({
        server: "dist", // 访问目录，自动指向该目录下的 index.html 文件
        // proxy: "你的域名或IP"    // 设置代理
        host: "192.168.101.76",
    });
});

// 加入'watch'任务
gulp.task("default", ["clean"], function () {
    gulp.start([
        "testImagemin",
        "css_libs",
        "sass_libs",
        "html",
        "js_path",
        "browser",
        "watch",
    ]);
});
